perm filename PROP.TO[P,JRA] blob
sn#559240 filedate 1981-01-26 generic text, type C, neo UTF8
COMMENT ā VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 Here's an outline of what's going on, what's been written and where things
C00018 00003 Books already in "market"
C00022 00004 What a modern LISP book should have.
C00027 ENDMK
Cā;
Here's an outline of what's going on, what's been written and where things
are going. The situation is rather jumbled right now because I'm doing
about eight things at once, all alone, and all without funds. What is
certain is that at least one book will appear from this chaos --three
courses depend on it--; and further, the ultimate success of this endeavor
depends on the finances and marketing skills of a firm with more resources
than I possess.
The ultimate goal is the revitalization of the mathematics programs in our
high school, basing the curricula on the fundamental ideas that support
computation. The tool to support this effort is LISP.
By way of background, sometime in 1974 while writing "Anatomy of LISP", it
occurred to me that the principles supporting LISP were an appropriate
vehicle to use in discussing computation at the high school level.
Besides having a rich history of interesting application --Artificial
Intelligence--, it possesses a novel feature in the realm of programming
languages: it has a mathematically rigorous foundation. With this dual
support --intriguing applications, and substantial content-- it seemed a
natural way to teach mathematics and computing: mathematics as a formal
system, like geometry, with the same degree rigor and axiomatics;
mathematics as a foundation for the notion of functionality; computing as
a creative and intellectual endeavor --something more than the "electronic
driver education" crap that gets passed off now as high school (and
unfortunately, college) computing. Unfortunately at that time,
computational devices were much too expensive to support high-school level
usage of an interactive LISP; also at that time I was deep in the
writing/revision of "Anatomy".
When "Anatomy" was in press I approached McGraw-Hill about a follow-on
book: January 1978. By this time, personal computing had arrived and the
natural thing was to integrate the learning of the language with the
system on which it was to be run. The primary example of this scheme (and
its success!) is UCSD Pascal. Unfortunately McGraw-Hill wanted the book,
but balked at the prospect of integrated learning. A short while later
BYTE Books approached me, but again they were only interested in the
"text" part of the project; that suprised me, considering their
background.
By this time it was June of 1979 and I was thoroughly convinced that the
integrated approach was the only way to impact education and computing (I
think the UCSD Pascal experience reinforces that belief) I formed The LISP
Company, to produce the computer end of the plan. The resulting LISP
system for the Z-80 supplies a professional, quality LISP system at modest
cost. By January 1980 the LISP was solid and now the problem was to build
an integrated curriculum.
The plan had to wait for a while because I had to organize the LISP
Conference. I had decided in the fall of 1978 that this conference was
needed but no one would move on it, so in the fall of 1979 I organized it
myself, assuming that people would help out. By Jan 1980, it was clear
that nothing was going to happen unless I did it, so TLC went dormant
while I wrote letters, licked stamps, berrated tardy reviewers, pasted
folios, and generally when broke and crazy.
This brings me to last fall. By then, I had a reasonably clear idea in how
to present the technical aspects, but felt uneasy --computing is more than
technology's toy. I prepared a talk for the last SIGSMALL Conference
blasting the superficial approach to computing --that paper turned into
the attached "Bankruptcy of Basic". Carl Helmers, editor of BYTE, and I
discussed our general dislike about the apparently superficial attitudes
on computing and have decided to hold a special session at the next
SIGSMALL Conference on "Languages for Thinking about Thinking"
I approached Texas Instruments with the integrated educational plan since
they profess strong interest in AI, LISP, and education; they were
interested, even to the point of flying me to Dallas. Unfortunately, they
claimed that a bad financial picture would not let them support the whole
project, but took the reverse position to that of BYTE and McGraw-Hill,
opting for the LISP part that impacted on professional systems, not the
educational aspects. To me, that's equally unsatisfactory. If substantial
changes are to be made, a massive and integrated effort is required. The
irony of the TI position is that they say the plan would have been adopted
without problem six-months earlier; that was when I was deluged with the
Conference organization, and TI was one of the companies that I had
approached to help support the conference. Sigh, what if...
Late last year, several other things came together. I taught a graduate
course at Santa Clara University on "Functional Programming" and from that
came a set of notes/slides. These notes are being expanded into technical
part of the spring undergraduate course, "The Art of Computer Science".
The new ingredient in the spring course is an Interactive Programming
Laboratory. I plan to use a network of Z-80's running TLC-LISP, Rosetta
Samlltalk, Visicalc, and assorted other good examples of interactive
behavior --understanding the techniques of computation is like learning to
drive: one has to use the instrument. Unfortunately, I'm running the
course out of my own pocket (another LISP conference experience), and
personal loans. I fear that unless I can obtain additional funds quickly
the lab may be stripped to the point where a meaningful demonstration may
not be possible.
This term I'm teaching a graduate class in "Artificial Intelligence", as a
follow-on the the Functional programming experience. Mixed into this
"stew" is another ingredient. I volunteered to do a special
lisp/functional-programming/object-oriented session at the upcoming West
Coast Computer Faire, and for that, present a half-day tutorial on LISP
and friends. I was supposed to consolidate all this business into eight
pages for the proceeding; I made it in twelve, from basic notions of
computation, through LISP and frame languages, to Visicalc as an instance
of constraint-based programming. This paper is being expanded into the
undergraduate course.
I expect to present the material, with a more emphasis on the humanities
side of the issues, as a Santa Clara faculty workshop in computer
literacy, augmenting the technical side with explorations into the
cultural impact of computing. My current view is to use "The Decline of
the West" by Spengler as the major point of reference. This workshop
should prove incredibly exciting and beneficial in broadening my
understanding of the societal issues of computing; this course is planned
as a continuing program for the School of Humanities.
Also I will present an advanced technical version of the material as a
course in the 11th Annual Summer Computer Science Institute. This
institute, usually run at U.C. Santa Cruz, will be held on the Santa Clara
campus and will draw a substantial number of proefssionals interested in
LISP and AI applications.
So the future holds promise. There is at least one book --probably two,
maybe three at the college level; at least one at the high school level.
The immediate problem is financial. I need a financial (an almost moral)
commitment from an organization to help support this project. As I said
earlier, the ultimate goal is to move this type of program into the high
schools. What I have seen of the computer-related high school programs is
not at all encouraging; what exists as traditional programs is even more
depressing. A fresh perspective is needed. I feel that my approach holds
great promise.
Summary of courses and projects:
1. SCU, Fall term 1980, graduate course: "Functional Programming"
2. SCU, Winter term 1981, graduate course: "Artificial Intelligence"
3. SCU, Spring term 1981, undergraduate course: "Art of Computer Science"
a prototype of class for entering CS students.
4. Spring, West Coast Computer Faire, Special "LISP/Object-oriented Session"
papers, demos, and tutorials on LISP, LOGO, Smalltalk -ish things.
5. Summer 1981, C.S. Institute course: "LISP".
to be taught with Larry Masinter of Xerox PARC
6. (tentative) SCU Faculty Seminar at Santa Clara: "Computer Literacy"
a prototype of class for entering Humanities students.
7. (tentative) High School teacher's summer workshop.
8. Fall 1981, Sigsmall special session on "Languages for Thinking about Thinking"
to be co-organized with Carl Helmers
Summary of Papers:
1. The Bankruptcy of Basic. Directed to high school mathematics personnel.
2. LISP, Functional Programming, .... Summary of technical part of the
undergraduate SCU course.
3. Computer Literacy. Proposal the the Administration of SCU to develop a
faculty seminar.
4. The Art of Computer Science: an outline of the technical part of the
undergraduate SCU course.
5. Interactive Programming Laboratory. A minimal budget for the undergraduate
laboratory.
6. Mathematics and Science Curriculum. Short description of the longer range
plan to move this program toward high schools.
7. LISP: An outline of the Summer Computer Science Institute course.
lois
Books already in "market"
Winston: LISP --Addison-Wesley
Book has no sense of programming "style", basically presenting 1960
view of LISP. No attention to abstraction, either in data
representation or in programming (i.e. structured programming).
Has a good set of introductory exercises.
Some attention to non-AI kinds of applications
Some attention to evaluation/implementation mechanisms
No sense of functional programming over the 1960 LISP view.
Charniak, et. al.: Artificial Intelligence Programming --Erlbaum
Non-stuctured view of language, mixing applicative (functional),
imperative, and subconscious (rplaca/d) LISP all together.
Poor set of introductory exercises.
Good sense of data abstraction, and how to use it, and implement it.
Uses LISP 1.6 (1965) view of LISP; better than 1965, but not best
possible.
No treatment of scoping problems --the critical issue in functional
objects.
Does have some attention given to functional ideas in back (Schum)
Far from complete, and not integrated into book.
Nothing about implementation.
Henderson: Functional Programming --Prentice Hall
Uses the meta-language/object-language distinction throughout the book
(as does "Anatomy of LISP"), therefore not an appropriate book for
learning about LISP-like programming.
Incomplete view of LISP: no conception of property-lists, the key to
object oriented programming.
No sense of abstract data structures.
No LISP macros: the key to efficient implementation of abstract
structure definitions.
Nothing about programming technology (programming environments)
--------------------------------------------
Allen: Anatony of LISP --McGraw-Hill
Not a programming book, a concepts book
Siklossy: Let's Talk LISP --?
Cutesy, and full of inaccuracies
Friedman: The Little LISPer --SRA
Cutesy style to the point of sickness
no concept of programming style
1960 LISP
McCarthy & Talcott: LISP programming and Proving(?) --MIT press
1960 pure LISP as the basis of mathematical theory of computation
What a modern LISP book should have.
In preparing for the future, a LISP book should contain material that
explains the concepts underlying programming technology. The technology
includes "classes", "hierarchies","constraints", "object-oriented" ideas
for example. These ideas are related to basic LISP constructs quite
naturally; an informal treatment is given in my paper for the West Coast
Computer Faire, "A VIEW OF LISP, FUNCTIONS, OBJECTS, FRAMES, AND
CONSTRAINTS". As Smalltalk becomes available, it will be important to
supply texts that explain the fundamental ideas that support the Smalltalk
exterior.
A further, but related, consideration is the treatment of programming
environments, what they are and how interactive programming impacts on the
program design process. As LISP and Smalltalk machines become widely
available, more people will wish to understand the philosophy supporting
interactive programming. It is quite distinct from that espoused by the
Pascal school.
Below is a short summary of topics that should be coverd, including
references to texts that may cover part of that material.
key: AIP = Charniak, et. al.
LISP = Winston's book
FP = Henderson
Anatomy = me
modern lisp: lisp machine lisp cleaned up) => TLC-LISP
(no one only a rough approximation in the TLC-LISP Manual)
strong emphasis on data abstraction
(Anatomy, AIP)
strong emphasis on program abstraction: functional objects
(FP)
strong emphasis on abstraction in general: language as notation
(no one)
strong partition of language into applicative, imperative, and "features"
(Anatomy, FP somewhat)
good set of exercises
(LISP)
modern view of LISP data: first-class objects.
(no one! This is the key to object-oriented/actor ideas)
object-oriented programming and its underlying principles
(slight amount in Anatomy, AIP, and LISP, not in depth.
this will be VERY important as Smalltalk becomes available)
concern for programming environment, and its relation to "style" and, in fact,
language design.
(no one!)